// 目标： 一个功能只做一件事

// sprint
// game store
class LOLManager {
    openDialog() {
        // 弹出折扣框
        setPrice()
    }
}

const game = new LOLManager()
game.openDialog()  // 弹框 < = > 金额计算 两者功能产生了耦合

// 重构 - 上下分层
// 业务层
class LOLManager {
    constructor(command) {
        this.command = command
    }
    openDialog(price) {
        this.command.setPrice(price)
    }
}

// 逻辑层
class PriceManager {
    setPrice(price) {
        // 计算金额 算法
    }
    calcDiscount() {
        // 计算折扣
    }
}

// 功能运行
const exe = new PriceManager()
const game1 = new LOLManager(exe)

game1.openDialog(150)